package kr.pe.johnkim.carrotpoint.mobile.service;

import kr.pe.johnkim.carrotpoint.mobile.domain.CarrotPointMember;

/**
 * Carrot Point 사용자 service 관련 인터페이스 이다.
 *
 * @author : johnkim <cale9797@gmail.com>
 * @date: 13. 1. 31.
 */
public interface CarrotPointMemberService {

    /**
     * 최초 가입시 사용자 아이디로 중복 검사를 한다.
     *
     * @param carrotPointMember
     * @return
     */
    public CarrotPointMember getMemberExistById(CarrotPointMember carrotPointMember);

    /**
     * 사용자를 등록 한다.
     *
     * @param carrotPointMember
     */
    public void registerMember(CarrotPointMember carrotPointMember);

    /**
     * 사용자 정보를 가져 온다.
     *
     * @param carrotPointMember
     * @return
     */
    public CarrotPointMember getMemberInformation(CarrotPointMember carrotPointMember);

    /**
     * 사용자 정보를 업데이트 한다.
     *
     * @param carrotPointMember
     */
    public void updateMemberInformation(CarrotPointMember carrotPointMember);

    /**
     * 사용자의 GCM Registration Id / APNS Device Token 을 업데이트 한다.
     *
     * @param carrotPointMember
     */
    public void updateRegistrationId(CarrotPointMember carrotPointMember);

    /**
     * Push Notification 수신 여부를 업데이트 한다.
     *
     * @param carrotPointMember
     */
    public void updateReceiveNotificationYn(CarrotPointMember carrotPointMember);

    /**
     * 사용자의 위치 정보를 업데이트 한다.
     *
     * @param carrotPointMember
     */
    public void updateMemberLocation(CarrotPointMember carrotPointMember);

    /**
     * 사용자의 활성화 여부를 업데이트 한다.
     *
     * @param carrotPointMember
     */
    public void updateMemberActivateYn(CarrotPointMember carrotPointMember);

    /**
     * 전화번호로 기존 사용자가 있는지 확인 한다.
     *
     * @param carrotPointMember
     * @return
     */
    public CarrotPointMember getMemberExistByPhoneNumber(CarrotPointMember carrotPointMember);

    /**
     * 전화번호로 기존 사용자 정보를 가져 온다.
     *
     * @param carrotPointMember
     * @return
     */
    public CarrotPointMember getMemberInformationByPhoneNumber(CarrotPointMember carrotPointMember);
}
